from operator import itemgetter

import dotenv
from langchain_community.chat_models import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableParallel, RunnablePassthrough

dotenv.load_dotenv()
def retriver_from_anywhere(query:str):
    print(f"开始检索问题{query}的相关文档")
    return "我叫博小瑞，今年11岁，存款110块"

# 构建一个prompt
prompt = ChatPromptTemplate.from_template("""
请根据用户的问题来回答，可以参考上下文进行问题的回答，
<context>
{context}
</context>
用户的问题是：
{query}
""")
# llm的构建
llm = ChatOpenAI(model="gpt-3.5-turbo-16k")
# 输出解析器
paraser = StrOutputParser()
# 通过接收用户传递的{"query":"你好，我是谁"},通过RunablePassthrough接收，并通过retriver_from_anywhere
# 来填充另一个参数context
chain_new =(RunnablePassthrough.assign(context = lambda x:retriver_from_anywhere(x["query"]))
|prompt|llm|paraser)

content= chain_new.invoke({"query":"你好，我是谁"})

print(content)